/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Interface;

import alice.tuprolog.InvalidTheoryException;
import alice.tuprolog.MalformedGoalException;
import alice.tuprolog.NoMoreSolutionException;
import alice.tuprolog.NoSolutionException;
import alice.tuprolog.Prolog;
import alice.tuprolog.SolveInfo;
import alice.tuprolog.Theory;
import alice.tuprolog.UnknownVarException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Vaio /* String base = "pc(U,V,R):- U=\"Leigo\", (V>1000, V<1500) ,
 * R=\"Acer\".\"\n" + "pc(U,V,R):- U=\"Leigo\", V = 3000, R =\"Vaio\".\n";
 * public base_dados(){ System.out.println(base); }
 */
public class base_dados {

    private String User; //= "Intermediario" ;
    private int Fundos;// = 1500;
    private int Tempo;// = 4 ;
    private String process; //= "Intel" ;
    private String pvideo; //=  "Nvidia";
    private String resultado;

    public base_dados() {
    }

    public base_dados(String User, int Fundos, int Tempo, String process, String pvideo, String resultado) {
        this.User = User;
        this.Fundos = Fundos;
        this.Tempo = Tempo;
        this.process = process;
        this.pvideo = pvideo;
        this.resultado = resultado;
    }

    public String getUser() {
        return User;
    }

    public void setUser(String User) {
        this.User = User;
    }

    public int getFundos() {
        return Fundos;
    }

    public void setFundos(int Fundos) {
        this.Fundos = Fundos;
    }

    public int getTempo() {
        return Tempo;
    }

    public void setTempo(int Tempo) {
        this.Tempo = Tempo;
    }

    public String getProcess() {
        return process;
    }

    public void setProcess(String process) {
        this.process = process;
    }

    public String getPvideo() {
        return pvideo;
    }

    public void setPvideo(String pvideo) {
        this.pvideo = pvideo;
    }

    public String toString() {
        return String.format("pc(" + User + "," + Fundos + "," + Tempo + "," + process + "," + pvideo + ",Computador).");
    }

    public String base() throws MalformedGoalException, InvalidTheoryException, NoSolutionException, UnknownVarException, FileNotFoundException, IOException {
        Prolog engine = new Prolog();
        Theory t;

        t = new Theory(new FileInputStream("bade_dado.pl"));

        engine.setTheory(t);
        String val = "";
        try {
            String consulta = String.format("pc(" + User + "," + Fundos + "," + Tempo + "," + process + "," + pvideo + ",Computador).");
            SolveInfo info = engine.solve(consulta);
            val = (info.getTerm("Computador")).toString();
            resultado = val;
            System.out.println(resultado);
//            while (info.isSuccess()) {
//
//                if (engine.hasOpenAlternatives()) {
//                    try {
//                        info = engine.solveNext();
//                    } catch (NoMoreSolutionException ex) {
//                        Logger.getLogger(base_dados.class.getName()).log(Level.SEVERE, null, ex);
//                    }
//                } else {
//                    break;
//                }
//            }

        } catch (MalformedGoalException ex) {
            System.out.println("erro goal");

        } catch (NoSolutionException ex) {
            System.out.println("erro resultado");
        }
        return val;
    }
}
